People use tablet, notebook, and desktop computers to create and refine many different types of electronic files. Examples of electronic file types include written documents, slide decks, sales brochures, web pages, photos, videos, program code, program graphics, general audio/visual presentations, and so forth. Accordingly, these different types of electronic files may have different kinds of content, such as textual content, image content, animation content, passive content, or executable content. Additionally, content included in an electronic file may be static or have a dynamically-changing aspect, e.g., through use of an interactive graphic, a flashing banner, a Graphics Interchange Format (GIF) item, or an executable script.
A multitude of applications have been developed to accommodate the various kinds of content as well as the different types of electronic files. Typically, conventional applications include modules that are specially designed to work with one or a small subset of the different kinds of content that are found in electronic files. A picture application, for example, may be designed to help people modify photographic content. Hence, a picture application includes an image-oriented module that is adept at working with photographic content, such as to help refine or enhance a photographic image.
As a result of this fragmented and specialized approach to application development, conventional application architecture is often burdened by a singular or independent programming strategy that results in modules that are tightly integrated with the applications of which the modules form a part. Unfortunately, it is therefore difficult to isolate a module from one application for inclusion in another application. For instance, in conventional application architectures an image-oriented module that is built into a picture application is not able to be reused as a module forming a part of a website design application. Consequently, the efforts invested to create an image-oriented module with powerful image-editing tools are not leveraged in conventional architectures across different applications or spread over multiple product lines, which is both inefficient and costly.
In a conventional application development environment in which multiple programming technologies are available for use in building an application, such as both web and native programming technologies, an independent application is likely to be built as a web application that runs entirely within a web browser or as a native application that runs in a stand-alone manner. Modules in such independent applications suffer from the lack of portability resulting from conventional integrated application architecture as discussed above. To address this lack of module portability, a hybrid application architecture may be adopted that leverages multiple programming technologies.
A hybrid application incorporates, for example, both web-based coding and native-based coding. Web-based coding includes HyperText Markup Language (HTML) and JavaScript web browser user interface (UI) technologies. Native-based coding includes native desktop or mobile computing platform UI technologies. A web-native hybrid application may therefore be implemented to include a web-coded module and a native-coded module. Separating functionality into different modules in a hybrid application makes reuse of this functionality possible, which reuse is not available in the same manner with conventional application architectures. Unfortunately, different modules corresponding to different technologies or functionalities do not typically interoperate well together within a given hybrid application. Consequently, execution speed of a hybrid application may be slowed to an extent that it becomes noticeable to a user. For example, providing on-screen UI feedback in response to user commands may be noticeably delayed, which creates a frustrating user experience (UX) and slows a user's productivity.